অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ইন্টিগ্রেশন টুল, যা ডেটা ফ্লো তৈরি, প্রক্রিয়া এবং পরিচালনা করার জন্য বিভিন্ন প্রোসেসরের মাধ্যমে কাজ করে। ডেটা এনরিচমেন্ট (Data Enrichment) এবং লুকআপ (Lookup) প্রোসেসরগুলি বিশেষভাবে ডেটার মান বৃদ্ধি বা অন্যান্য উৎস থেকে অতিরিক্ত তথ্য যোগ করার জন্য ব্যবহৃত হয়। এগুলি বড় আকারের ডেটা ইন্টিগ্রেশন এবং ট্রান্সফরমেশন কাজে সহায়ক।
ডেটা এনরিচমেন্ট (Data Enrichment)
ডেটা এনরিচমেন্ট হল একটি প্রক্রিয়া যেখানে একটি ডেটাসেটকে অতিরিক্ত তথ্য দিয়ে সমৃদ্ধ করা হয়, যা মূল ডেটাসেটের মান বৃদ্ধি করে। নিফাইতে ডেটা এনরিচমেন্ট সাধারণত অন্য ডেটা উৎস থেকে তথ্য সংগ্রহের মাধ্যমে করা হয়। উদাহরণস্বরূপ, একটি CSV বা ডাটাবেস থেকে তথ্য লুকআপ করে ফিচার যুক্ত করা।
ডেটা এনরিচমেন্ট প্রোসেসর
LookupRecordProcessor
LookupRecordProcessorনিফাইয়ের একটি শক্তিশালী প্রোসেসর যা বিভিন্ন ডেটা উৎস (যেমন ডাটাবেস, হ্যাশম্যাপ, CSV) থেকে তথ্য লুকআপ করে। এটি বিশেষভাবে ব্যবহৃত হয় যখন ডেটার সাথে অন্যান্য সোর্স থেকে মান যুক্ত করতে হয়।উদাহরণ:
- আপনার কাছে একটি লিস্ট আছে যেখানে নাম এবং ইমেইল রয়েছে, এবং আপনি ডেটাবেস থেকে সংশ্লিষ্ট ব্যবহারকারীর আইডি লুকআপ করতে চান।
LookupRecordProcessor lookupProcessor = new LookupRecordProcessor(); lookupProcessor.setLookupService(myLookupService); // Lookup service সংযোগ lookupProcessor.onTrigger(context, session); // Trigger method কলUpdateRecordProcessor
UpdateRecordProcessorএকটি অপরিহার্য প্রোসেসর যা ডেটার মধ্যে পরিবর্তন করে নতুন ফিল্ড বা মান যোগ করতে পারে। এটি প্রক্রিয়া করা রেকর্ডের মধ্যে এনরিচমেন্ট করতে সহায়ক।উদাহরণ:
- আপনি একটি ফাইল থেকে ডেটা পড়ছেন এবং ঐ ডেটা ফিল্ডের উপর ভিত্তি করে নতুন মান যোগ করতে চান।
UpdateRecordProcessor updateProcessor = new UpdateRecordProcessor(); updateProcessor.addReplacement("fieldName", "newValue"); // নির্দিষ্ট ফিল্ডে মান যোগ করা
লুকআপ (Lookup) প্রোসেসর
লুকআপ প্রোসেসরগুলি নিফাইয়ের এমন প্রোসেসর যা ইনপুট ডেটার জন্য অতিরিক্ত তথ্য সংগ্রহ করে এবং তা আউটপুট ডেটাতে যোগ করে। এই প্রোসেসরগুলির মাধ্যমে আপনি একটি ডেটা উৎস (যেমন ডাটাবেস, ফাইল, API) থেকে ডেটা সংগ্রহ করে ফিল্টার বা প্রক্রিয়া করতে পারেন।
লুকআপ প্রোসেসরের উদাহরণ
LookupService
LookupServiceএকটি ইন্টারফেস যা নিফাইয়ে লুকআপ প্রোসেসরের জন্য কাস্টম লুকআপ সার্ভিস তৈরি করার সুযোগ প্রদান করে। এই সার্ভিসটি লুকআপের জন্য বিভিন্ন প্রকার কনফিগারেশন যেমন ডেটাবেস, ক্যাশিং সার্ভিস বা এক্সটার্নাল API ব্যবহার করতে পারে।উদাহরণ:
- ডাটাবেস বা CSV ফাইল থেকে তথ্য লুকআপ করার জন্য আপনি
LookupServiceইন্টারফেস ব্যবহার করতে পারেন।
LookupService dbLookupService = new DatabaseLookupService();- ডাটাবেস বা CSV ফাইল থেকে তথ্য লুকআপ করার জন্য আপনি
ExecuteSQLProcessor
ExecuteSQLProcessorপ্রোসেসরটি একটি SQL কুয়েরি চালাতে সক্ষম, যা ডেটাবেসে তথ্য অনুসন্ধান করে এবং ডেটাবেস থেকে প্রাপ্ত ডেটা নিফাই ফ্লোতে যোগ করে। এটি লুকআপ অপারেশন হিসেবে ব্যবহার করা যায় যখন ডেটাবেস থেকে তথ্য যোগ করার প্রয়োজন হয়।উদাহরণ:
- একটি SQL কুয়েরি ব্যবহার করে ডেটাবেস থেকে নির্দিষ্ট তথ্য পেতে।
ExecuteSQLProcessor sqlProcessor = new ExecuteSQLProcessor(); sqlProcessor.setSqlQuery("SELECT * FROM users WHERE email = :email");GetFileProcessor
GetFileProcessorফাইল সিস্টেম থেকে ডেটা পেতে ব্যবহার করা হয়, এবং এটি লুকআপ অপারেশন হিসেবে কাজ করতে পারে যখন ফাইল থেকে কিছু তথ্য সংগ্রহ করতে হয়।উদাহরণ:
- নির্দিষ্ট ফাইল বা ডিরেক্টরি থেকে তথ্য সংগ্রহ করে লুকআপ অপারেশন সম্পন্ন করা।
GetFileProcessor fileProcessor = new GetFileProcessor(); fileProcessor.setDirectory("/path/to/directory");
Data Enrichment এবং Lookup Processors কনফিগারেশন
LookupService Configuration
যদি আপনিLookupRecordProcessorব্যবহার করছেন, তাহলে আপনাকে একটিLookupServiceকনফিগার করতে হবে যা নির্দিষ্ট ডেটাবেস বা ফাইল থেকে তথ্য লুকআপ করবে। এটির জন্য একটি কনফিগারেশন ফাইল তৈরি করতে হবে যা ডেটাবেস কানেকশন স্ট্রিং, ইউজারনেম, পাসওয়ার্ড ইত্যাদি অন্তর্ভুক্ত করবে।উদাহরণ:
- ডেটাবেস থেকে তথ্য লুকআপ করতে একটি
DatabaseLookupServiceকনফিগার করা।
lookupService = org.apache.nifi.lookup.DatabaseLookupService database.connection.url = jdbc:mysql://localhost:3306/mydb- ডেটাবেস থেকে তথ্য লুকআপ করতে একটি
Custom LookupProcessor
কাস্টম লুকআপ প্রোসেসর তৈরি করার সময়, আপনাকে এই প্রোসেসরটির জন্য ইনপুট এবং আউটপুট ফিল্ডগুলির মধ্যে সম্পর্ক এবং লুকআপ অপারেশন কনফিগার করতে হবে।public class CustomLookupProcessor extends AbstractProcessor { @Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { // লুকআপ সার্ভিস ব্যবহার করে লুকআপ প্রক্রিয়া String lookupValue = context.getProperty("lookupField").getValue(); String result = myLookupService.lookup(lookupValue); // আউটপুটে প্রক্রিয়াকৃত মান সংযুক্ত করা FlowFile flowFile = session.get(); session.putAttribute(flowFile, "lookupResult", result); session.transfer(flowFile, SUCCESS); } }
সারাংশ
অ্যাপাচি নিফাইতে ডেটা এনরিচমেন্ট এবং লুকআপ প্রোসেসরগুলি বিশেষভাবে ডেটা ফ্লোতে অতিরিক্ত তথ্য যোগ করার জন্য ব্যবহৃত হয়। LookupRecordProcessor এবং UpdateRecordProcessor ডেটার মান উন্নত করার জন্য ব্যবহৃত হয়, যখন ExecuteSQLProcessor এবং GetFileProcessor লুকআপ অপারেশন সম্পন্ন করতে সাহায্য করে। এই প্রোসেসরগুলি বিভিন্ন সোর্স যেমন ডাটাবেস, CSV ফাইল বা API থেকে তথ্য সংগ্রহ করে এবং ডেটা ফ্লোতে সেই তথ্য সংযুক্ত করে। নিফাইতে এই প্রোসেসরগুলির সঠিক কনফিগারেশন ও ব্যবহারে ডেটা প্রক্রিয়া ও ট্রান্সফরমেশন সহজ এবং কার্যকরী হয়ে ওঠে।
Read more